package com.linkdood.app.service;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.linkdood.app.domain.Account;
import com.linkdood.app.domain.DoodUser;
import com.linkdood.app.domain.User;
import com.linkdood.app.service.dto.DoodFriendsDTO;
import com.linkdood.app.vm.AccountVM;
import com.linkdood.app.vm.UserVM;

import java.util.List;
import java.util.Optional;

/**
 * user
 * @author YunJ
 */
public interface UserService extends IService<User> {

    // FIXME 多表联合分页查询，暂时使用 Mybatis 旧版 XML 格式，以后优化
    Page<UserVM> pageUsers(String displayName, String phone, String sourceId, String orgId, Page<Account> page);

    Page<UserVM> pageByNameAndPhoneAndNoRoles(String displayName, String phone, List<String> noRoles, Page<User> page);

    List<DoodFriendsDTO> listFriends(AccountVM userAccount);

    Page<User> pageAllUsers(LambdaQueryWrapper<User> queryWrapper, Page<User> page);

    Integer countUser(String thirdPartyId);

    Optional<User> getBySourceId(String thirdPartyId, String sourceId);

    User saveOrUpdateByDoodId(String doodId, String userToken);

    User saveOrUpdate(DoodUser doodUser);

    Optional<User> getUserByDoodId(String doodId);
}
